
public class ClipBoard {
	
	static byte board[][];
	static byte t =0;
	public static void main(String[] args) {
		int size = 8;
		board = new byte[size][size];
		int dr=3;
		int dc =5;
		
		board[3][5]=0;
		fullBoard(0,0,3,5,size);
		
	
		//
	}
	
	/**
	 * 
	 * @param tr 棋盘左上角 行数
	 * @param tc 棋盘右上角 列数
	 * @param dr 已覆盖棋局 行数
	 * @param dc 已覆盖棋局 列数
	 * @param size  棋盘的大小
	 */
	static void fullBoard(int tr,int tc,int dr,int dc,int size){
		
		//最小的就是2个
		if(size ==2){
			//去除已经覆盖的
			if(tr!=dr&& tc!=dc){
				board[tr][tc]=t;
			}
			if(tr!=dr&& (tc+1)!=dc){
				board[tr][tc+1]=t;
			}
			if((tr+1)!=dr&& tc!=dc){
				board[tr+1][tc]=t;
			}
			if((tr+1)!=dr&& (tc+1)!=dc){
				board[tr+1][tc+1]=t;
			}
			return;
			
		}else{
			int div = size/2;
			//判断 脏区在哪个区域
			//脏区在第一区域
			if((tr<=dr && tc<=dc ) && ((tr+div)>=dr && (tc+div)>=dc)){
				fullBoard(tr,tc,dr,dc,div);
				//设置第二个区域脏区
				t++;
				board[tr+div-1][tc+div]=t;
				//递归
				fullBoard(tr,tc+div,tr+div-1,tc+div,div);
				
				//设置第二个
				board[tr+div][tc+div-1]=t;
				fullBoard(tr+div-1,tc,tr+div,tc+div-1,div);
				
				//设置第三个
				board[tr+div][tc+div]=t;
				fullBoard(tr+div,tc,tr+div,tc+div,div);
				
			}
			
		}
	}
}
